During development, simulated hardware and software systems can aid in the design, test, and debugging processes. Simulated systems can give engineers insight into how the real-world system will perform, and allow designers to redesign, revise, and fix errors in the system before it is implemented in production hardware or software. Doing so can drastically reduce the cost of development.
Sometimes, one hardware or software system needs to communicate with another hardware or software system in real time. However, if these two systems are simulated on different platforms which provide more or less processing power than the real-time systems they simulate, the simulations may run at different clock speeds. Assume, for example, one simulation is executing on a simulation platform that runs at 2× the speed of the real-time system, and another is executing on a simulation platform that runs at 0.5× the speed of the real-world system. Communication between these two systems during simulation may not work because of the time discrepancy. For example, since the systems run at different clock speeds, logic that relies on the specific timing and sequencing of messages between the systems may not work properly. Similarly, normal system development activities such as using diagnostic tools or debuggers may vary the clock speed of the simulated systems, also causing mismatches vs. the expecting timing and sequencing and leading to failures. Thus, it may be very difficult to design and test the interface between the two systems in the simulated environment, reducing the benefits of the simulated environment and making the overall system development more difficult and costly.